home *** CD-ROM | disk | FTP | other *** search
- (*****************************************************************************)
- (* *)
- (* TPBoard - A Turbo Pascal Bulletin Board System *)
- (* *)
- (* Copyright (c) 1987,88 by *)
- (* Jon Schneider & Rick Petersen *)
- (* *)
- (* Portions Copyright (c) 1986,87 by *)
- (* Steve Fox & Les Archambault *)
- (* *)
- (* All commercial rights reserved. *)
- (* *)
- (* *)
- (* This program is based on Les Archambault's PICS, which in turn was *)
- (* based on ROS Vers 3.4 by Steve Fox. It is NOT public domain. You *)
- (* are not allowed to use any of it's code in any commercial product. *)
- (* *)
- (* The code uses portions of the 'Turbo Professional' library. It *)
- (* will not compile without it. It also uses 'Overlay Manager', but *)
- (* you can compile without it as long as you remove 'Overmgr' from *)
- (* the 'Uses' statement in TPBMain. If you don't use the Overlay *)
- (* Manager, you may not be able to 'Type' from within Archives. *)
- (* *)
- (* This program also uses the Database Toolbox from Borland. You MUST *)
- (* have it before compiling, as it uses B+Trees for the users record. *)
- (* *)
- (* Additional thanks to: *)
- (* *)
- (* Chuck Forsberg - for his splendid protocol engine, DSZ. *)
- (* Darrell Pittman - for his Quotes package. *)
- (* Bob Hartman - for his excellent FidoNet programs. *)
- (* Ted Lassagne - for his EXDATE unit. *)
- (* Tim Kokkonen - for his Turbo Pascal tools, both commercial and PD. *)
- (* *)
- (*****************************************************************************)
-
- {For update & modification history see the file TPB-UPD.HIS.}
-
-
- {$R-} {Range checking off}
- {$B-} {Boolean complete evaluation off}
- {$S-} {Stack checking off}
- {$I+} {I/O checking on}
- {$N-} {No numeric coprocessor}
- {$M $4000, $4000, $A0000}
-
-
- program TPBoard;
-
-
- Uses
- TPCrt, Globals, Core1, Core2, Utilmnu1,
- FileMnu1, MsgEntr, Sysop4, Initial1,
- Initial2, Loginout, TPBMain;
-
-
- begin { TPBoard }
- CheckBreak := False;
- num_params := ParamCount;
- cmd_tail := num_params > 0;
- System_Init;
- cold_start;
- setup;
- wait_for_user;
- check_300_restrict;
- while not fini do
- begin
- login;
- if Online and in_use then
- set_initial_areas;
- while Online and in_use do
- begin
- WriteLn(Com);
- if op_chat then
- op_chat := chat;
- check_time;
- Make_Prompt;
- Write_status_line;
- WriteLn(Com);
- st := prompt(st, 70, 'ES?M');
- if Length(st) >= 1 then
- ch := st[1]
- else
- ch := ' ';
- if (not op_chat) then
- begin
- case mode of
- message_mode :
- process_messages;
- files_mode :
- process_files;
- utility_mode :
- process_utility;
- sysop_mode :
- process_sysop;
- end;
- end;
- if online and (not in_use) and (not macro_in_progress) then
- begin
- WriteLn(Com);
- in_use := (not ask('Terminate this call', 'Y'));
- end;
- end; {online and in use}
- if in_library or in_arc then
- ArcLbr;
- if audit_on then
- toggle_audit;
- if (user_rec.fn <> 'SYSOP') and Online then
- begin
- if not valid_pw then
- mesg_enter('S')
- else if ask('Do you have a message for the sysop', 'N') then
- mesg_enter('S');
- end;
- wrapup;
- if cmd_tail then
- begin
- System_De_Init;
- ClrScr;
- Halt
- end;
- setup;
- wait_for_user;
- check_300_restrict;
- end;
- System_De_Init;
- ClrScr;
- end. { of TPB.PAS }
-
-